쿠버네티스 보안 모범 사례
쿠버네티스 보안 모범 사례는 클러스터와 애플리케이션을 보호하기 위한 권장 사항과 기술입니다.
주요 보안 영역
- 인증 및 인가: 사용자 및 서비스의 접근 제어
- Pod 보안: 컨테이너 보안 컨텍스트 및 정책
- 네트워크 보안: 클러스터 내 통신 제어
- 암호화: 데이터 보호 및 비밀 관리
- 감사: 클러스터 이벤트 모니터링 및 로깅
클라우드 네트워크 개념과 비교
- 심층 방어: 클라우드 보안과 마찬가지로 여러 보안 계층 적용
- 최소 권한 원칙: 클라우드 IAM 모범 사례와 유사하게 필요한 최소 권한만 부여
실습 예시
Pod Security Standards 적용
apiVersion: v1
kind: Namespace
metadata:
name: restricted
labels:
pod-security.kubernetes.io/enforce: restricted
pod-security.kubernetes.io/audit: restricted
pod-security.kubernetes.io/warn: restricted
보안 컨텍스트 설정
apiVersion: v1
kind: Pod
metadata:
name: secure-app
spec:
securityContext:
runAsUser: 1000
runAsGroup: 3000
fsGroup: 2000
containers:
- name: app
image: secure-app:latest
securityContext:
readOnlyRootFilesystem: true
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
네트워크 정책
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-all
namespace: production
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Secret 암호화 구성
apiVersion: apiserver.config.k8s.io/v1
kind: EncryptionConfiguration
metadata:
name: encryption-config
spec:
resources:
- resources:
- secrets
providers:
- aescbc:
keys:
- name: key1
secret: <base64-encoded-key>
- identity: {}
Pod Security Standards
- Privileged: 제한 없음 (권장되지 않음)
- Baseline: 명백한 권한 상승 차단
- Restricted: 강력한 보안 제어 적용
- 권한 상승 방지
- 컨테이너 권한 제한
- 기능 및 파일시스템 접근 제한
주요 보안 모범 사례
- RBAC 엄격히 적용: 최소 권한 원칙에 따라 권한 부여
- 네트워크 정책 구현: 기본 거부로 시작하고 필요한 통신만 허용
- Pod 보안 표준 적용: 모든 네임스페이스에 적절한 수준 적용
- Secret 암호화: etcd에 저장된 시크릿 암호화
- 이미지 스캐닝: 취약점 및 악성코드 검사
- 컨테이너 불변성: 런타임 중 컨테이너 수정 방지
- 감사 로깅 활성화: 클러스터 이벤트 모니터링
- 주기적인 패치: 모든 컴포넌트 최신 상태 유지
- Service Account 제한: 필요한 경우에만 특권 부여
- 적절한 리소스 제한: 리소스 고갈 공격 방지